﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Infraestrutura.Repositorios.SQL;
using System.Configuration;
using System.Data.SqlClient;


namespace Model.Analise
{
    public class AnaliseService : RepositorioSQL<CustosUnidade>, IAnaliseService
    {
        public AnaliseService()
        {
            Tabela = "";
            LigacaoBD = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
        }


        public IList<CustosUnidade> DemonstracaoCustosDia(DateTime data)
        {
            IList<CustosUnidade> lista = new List<CustosUnidade>();

            using (SqlConnection sqlConnection = new SqlConnection(LigacaoBD))
            {
                SqlCommand command = new SqlCommand(
                  String.Format("exec proc_AnaliseCustoDia @Data='{0}'",
                                        data.ToString("yyyy-MM-ddTHH:mm:ss")),
                  sqlConnection);

                sqlConnection.Open();

                SqlDataReader reader = command.ExecuteReader();

                CustosUnidade item = null;
                while (reader.Read())
                {
                    item = new CustosUnidade();
                    lista.Add(CarregarDados(reader, item));
                }

                reader.Close();
            }

            return lista;
        }

        public IList<CustosUnidade> DemonstracaoCustosDia(Int64 idUnidade, DateTime data)
        {
            IList<CustosUnidade> lista = new List<CustosUnidade>();

            using (SqlConnection sqlConnection = new SqlConnection(LigacaoBD))
            {
                SqlCommand command = new SqlCommand(
                  String.Format("exec proc_AnaliseCustoDia @IdUnidade={0}, @Data='{1}'",
                                                   idUnidade, data.ToString("yyyy-MM-ddTHH:mm:ss")),
                  sqlConnection);

                sqlConnection.Open();

                SqlDataReader reader = command.ExecuteReader();

                CustosUnidade item = null;
                while (reader.Read())
                {
                    item = new CustosUnidade();
                    lista.Add(CarregarDados(reader, item));
                }

                reader.Close();
            }

            return lista;
        }

        protected override String ObterParametrosInserir(CustosUnidade item)
        {
            return null;
        }

        protected override String ObterParametrosActualizar(CustosUnidade item)
        {
            return null;
        }


        protected override String ObterParametrosApagar(CustosUnidade item)
        {
            return null;
        }

        protected override CustosUnidade CarregarDados(SqlDataReader dataReader, CustosUnidade item)
        {
            item.IdCliente = Convert.ToInt64(dataReader["IdCliente"]);
            item.Nome = dataReader["Nome"].ToString();
            item.IdUnidade = Convert.ToInt64(dataReader["IdUnidade"]);
            item.Designacao = dataReader["Designacao"].ToString();
            if (!Convert.IsDBNull(dataReader["RacioMprimasEfectivo"]))
                item.RacioMprimasEfectivo = Convert.ToDecimal(dataReader["RacioMprimasEfectivo"]);
            if (!Convert.IsDBNull(dataReader["RacioMprimasPrevisto"]))
                item.RacioMprimasPrevisto = Convert.ToDecimal(dataReader["RacioMprimasPrevisto"]);
            if (!Convert.IsDBNull(dataReader["TotalCustosEfectivo"]))
                item.TotalCustosEfectivo = Convert.ToDecimal(dataReader["TotalCustosEfectivo"]);
            if (!Convert.IsDBNull(dataReader["TotalCustosPrevisto"]))
                item.TotalCustosPrevisto = Convert.ToDecimal(dataReader["TotalCustosPrevisto"]);
            if (!Convert.IsDBNull(dataReader["TotalVendasEfectivo"]))
                item.TotalVendasEfectivo = Convert.ToDecimal(dataReader["TotalVendasEfectivo"]);
            if (!Convert.IsDBNull(dataReader["TotalVendasPrevisto"])) 
                item.TotalVendasPrevisto = Convert.ToDecimal(dataReader["TotalVendasPrevisto"]);

              return item;
        }
    }
}
